﻿using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;
using System.Data;

namespace Smart
{
    public class BackOffice
    {
        Mikro mikro = null;
        private static BackOffice _instance = null;
        private BackOffice()
        {
            mikro = new MikroV12();
            DbSqlServer.Get.CnnString = string.Format("data source={0};database={1};user id={2};password={3}", Program.Session[Settings.Sunucu], Program.Session[Settings.Veritabani], Program.Session[Settings.VtKullaniciAdi], Program.Session[Settings.VtSifre]);
        }
        public static BackOffice Get
        {
            get
            {
                if (_instance == null)
                    _instance = new BackOffice();
                return _instance;
            }
        }


        #region Servis işlemleri
        public string[] BarkodList(DateTime lastupdateDate)
        {
            return mikro.BarkodList(lastupdateDate);
        }
        public string[] StokList(DateTime lastupdateDate)
        {
            return mikro.StokList(lastupdateDate);
        }
        public string[] DepoList()
        {
            return mikro.DepoList();
        }
        public string[] SrmList()
        {
            return mikro.SrmList();
        }
        public string[] KullaniciList()
        {
            return mikro.KullaniciList();
        }
        public string[] EnvanterList(int depoNo, DateTime lastupdateDate)
        {
            return mikro.EnvanterList(depoNo, lastupdateDate);
        }
        public string[] MenuList(int kullaniciID)
        {
            return mikro.MenuList(kullaniciID);
        }
        public string[] CariList(DateTime sonGuncellemeTarihi)
        {
            return mikro.CariList(sonGuncellemeTarihi);
        }
        public string[] CariBakiyeList(DateTime sonGuncellemeTarihi, string[] srmMerkez)
        {
            return mikro.CariBakiyeList(sonGuncellemeTarihi, srmMerkez);
        }
        public string[] CariAdresList(DateTime sonGuncellemeTarihi)
        {
            return mikro.CariAdresList(sonGuncellemeTarihi);
        }
        public string[] IskontoMatris(DateTime sonGuncellemeTarihi)
        {
            return mikro.IskontoMatris(sonGuncellemeTarihi);
        }
        public bool EvrakEkle(string[] header, string[] details)
        {
            return mikro.EvrakEkle(header, details);
        }
        public bool TahsilatEkle(string[] Lines)
        {
            return mikro.TahsilatEkle(Lines);
        }
        public string[] DovizKurlari(DateTime tarih)
        {
            return mikro.DovizKurlari(tarih);
        }
        public string[] getServiceTime()
        {
            return mikro.getServiceTime();
        }
        public virtual string[] AyarYukle(int kullaniciId)
        {
            return mikro.AyarYukle(kullaniciId);
        }
        #endregion

        public byte[] EvrakCins(EvrakTipleri cins)
        {
            return mikro.EvrakCins(cins);
        }
        public int MaxSira(EvrakTipleri tip, string seri)
        {
            return mikro.MaxEvrakNo(tip, seri);
        }
        public int MaxSatir(EvrakTipleri tip, string seri, int sira)
        {
            return mikro.MaxSatirNo(tip, seri, sira);
        }
        public bool EvrakVarmi(EvrakTipleri tip, string seri, int sira)
        {
            return mikro.EvrakVarmi(tip, seri, sira);
        }
        public bool BagliMi(EvrakTipleri tip, string seri, int sira)
        {
            return mikro.BagliMi(tip, seri, sira);
        }

        public string CariListSql(string filtre, bool cariKodaGore)
        {
            return mikro.CariListSql(filtre, cariKodaGore);
        }
        public string CariBilgi(int cariId)
        {
            return mikro.CariBilgi(cariId);
        }
        public string CariBilgi(string carikod)
        {
            return mikro.CariBilgi(carikod);
        }
        public string StokListSql(string filtre, bool stokKodaGore)
        {
            return mikro.StokListSql(filtre, stokKodaGore);
        }
        public string DepoListSql()
        {
            return mikro.DepoListSql();
        }
        public string SrmListSql()
        {
            return mikro.SrmListSql();
        }
        public bool SayimAktar(DataTable dt, bool evrakSil)
        {
            return mikro.SayimKaydet(dt, evrakSil);
        }
        public string StokBilgi(string filtre, bool stokKodaGore)
        {
            return mikro.StokBilgi(filtre, stokKodaGore);
        }
        public string SharEvrakList()
        {
            return mikro.StokHarEvrakList();
        }

        public void BarkodEkle(string barkod, string stokkod, int barkodid)
        {
            mikro.BarkodEkle(barkod, stokkod, barkodid);
        }
        public void MikroEkle(ref HareketBilgileri row, EvrakTipleri tip)
        {
            mikro.MikroEkle(ref row, tip);
        }
        public string EvrakDetaySql(EvrakTipleri tip, String seri, int sira)
        {
            return mikro.EvrakDetaySql(tip, seri, sira);
        }
        public void SharSil(int sharId)
        {
            mikro.SharSil(sharId);
        }
        public virtual void EvrakSil(EvrakTipleri tip, String seri, int sira, byte harTip, byte harCins, byte normalIade, byte evrTip)
        {
            mikro.EvrakSil(tip, seri, sira, harTip, harCins, normalIade, evrTip);
        }
    }
}
